草庐IT

c++ - std::string::iterator 偏移并返回

全部标签

function - Golang 中没有返回值函数

当我在看《thelittlego》这本书时,我发现它建议写一个没有任何返回值的函数。所以我继续测试该功能,但程序无法编译并给我这个“...用作值”错误。有人知道这里发生了什么吗?packagemainimport("fmt")funclog(messagestring){fmt.Println(message)}funcmain(){msg:=log("justamessage")fmt.Println(msg)}我知道这个函数很简单(也许这个问题也很愚蠢)。但我只是想知道这种函数在Go中是否合法? 最佳答案 这里的功能你用过fun

pointers - 如何定义一个函数,该函数接收一个指针作为参数并返回一个指向该参数的子节点之一的指针?

现在我正在学习Go,这是我第一次接触指针。但这有点棘手,我开始怀疑我这样做是对还是错。标题是我最好的猜测,试图用外语解释我想做的事情,所以如果不清楚,我可以尝试用不同的方式解释。这是代码的简化示例:https://play.golang.org/p/eultYp7Cq12funchasCity(elementstring,state*State)(bool,*City){for_,city:=range(*state).Cities{if(city.Name==element){returntrue,&city}}returnfalse,nil}如您所见,输出为:true&{Campi

string - 无法在 golang 中使用 "\n"正确拆分字符串

我试图将free命令的输出分成3行。free的一般输出是可用的免费共享buff/缓存总数内存:163092361112988486030053430043190524306208交换:2097151623423620737280但是当我使用golang的strings.Split()时,Split函数现在按预期运行。我尝试调试它但找不到任何东西。请帮忙。packagemainimport"os/exec"import"github.com/golang/glog"import"fmt"import"strings"import"errors"functhisWorks(){str_ou

go - 虽然设置了 GOPATH,但 echo $GOPATH 什么都不返回

我有一个奇怪的问题。当我运行goenv时,我得到以下信息:GOARCH="amd64"GOBIN=""GOCACHE="/home/ethanc/.cache/go-build"GOEXE=""GOFLAGS=""GOHOSTARCH="amd64"GOHOSTOS="linux"GOOS="linux"GOPATH="/home/ethanc/go"GOPROXY=""GORACE=""GOROOT="/usr/local/go"GOTMPDIR=""GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64"GCCGO="gccgo"CC="gcc"

json - Golang解析JSON返回0

我试图解析的JSON非常基本,看起来像这样。{"id":3,"title":"Test"}以下是我试图用于创建和解析JSON的代码。packagemainimport("fmt""encoding/json")typeConfigstruct{idinttitlestring}funcmain(){varjsonStr=[]byte(`{"id":3,"title":"Test"}`)varconfConfigerr:=json.Unmarshal(jsonStr,&conf)iferr!=nil{fmt.Print("Error:",err)}fmt.Println(conf)fmt

go - 为什么有时在括号中有返回值,但有时在 Go 函数签名中却没有?

我注意到Go函数签名有时在括号中有一个返回值,有时则没有。这只是一个品味问题,还是选择一个而不是另一个有更深层次的含义。我查看了go文档和博客文章中的go规范等,但没有找到任何结论来回答这个问题。我遇到的大多数函数签名定义都掩盖了这一点,这就是为什么我认为答案是微妙的。funcExample(numint)(error){..}funcExample(numint)error{..} 最佳答案 如果函数只有一个返回值,那么带括号和不带括号都是一个意思。通常首选不带括号。如果函数有多个返回值,则需要括号。funcExample()(s

go - 为什么函数能够返回局部变量?

关闭。这个问题需要detailsorclarity.它目前不接受答案。想改善这个问题吗?通过editingthispost添加详细信息并澄清问题.2年前关闭。Improvethisquestion这只是引起我好奇的事情。虽然我们知道在C/C++中返回在函数中声明的局部非指针类型变量是非法的,但这在Golang中是完全合法的。为什么呢?编译器是否会根据变量的使用情况在编译时决定是否将变量分配到堆栈/堆中?例如funcgetVal()*int{x:=1return&x} 最佳答案 对,就是这样。编译器执行称为“转义分析”的操作以确定变量

string - 在golang中使用==符号和使用循环比较字符串a是否等于字符串b,哪个性能更好?

fori:=0;i只是a==b我发现同一个字符串有不同的地址a:="abc"b:="abc"println(&a)println(&b)答案是:0xc420045f680xc420045f58所以==不使用地址来比较。其实我想知道==是如何比较两个字符串的。我在网上找了很久。但是失败了... 最佳答案 您应该使用==比较字符串的运算符。它比较了string的内容值(value)观。你打印的是a的地址和b变量。由于它们是2个不同的非零大小变量,因此根据定义它们的地址不能相同。他们持有的值(value)观当然可能相同也可能不同。==运算

go - String 类型声明与 string 不可比

我有一个别名类型“LogLevel”,它是一个字符串:typeLogLevelstringconst(InfoLevelLogLevel="info"DebugLevelLogLevel="debug"WarnLevelLogLevel="warn"ErrorLevelLogLevel="error"PanicLevelLogLevel="panic"FatalLevelLogLevel="fatal")现在我想做一个switchcase来根据用户输入检查这些常量:switchstrings.ToLower(input){case"",InfoLevel:returnzap.NewAt

go - 如何延迟函数返回的匿名函数

假设您有一个函数可以设置您的应用程序服务器并返回一个应该在您的应用程序退出之前立即运行的函数。funcmain(){deferapplicationExit()}funcapplicationExit()func(){fmt.Println("ApplicationSetupCall")returnfunc(){fmt.Println("ApplicationTearDownCall")}}您将获得以下输出。输出:应用程序设置调用出了什么问题?为什么我们看不到输出ApplicationTearDownCall 最佳答案 您的代码完全